import { customRef } from "vue"

export default function (initVal:string, delay:number) {
  let timer:number // 定时器返回的是一个数字编号
  // track 跟踪 ,trigger 触发
  let msg = customRef((track, trigger)=>{
    return {
      // msg被读取的时候调用
      get () {
        // return 'hello'
        track() // 告诉Vue数据msg很重要,要对msg进行持续关注,一旦msg变化就去更新
        return initVal
      },
      // msg被修改时调用
      set (val) {
        clearTimeout(timer)
        timer = setTimeout(() => {
          initVal = val
          trigger() // 通知Vue, 数据msg变化了
        }, delay);
      }
    }
  })
  return {msg}
}

